package re.jf.echangeur.utilitaire;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JEditorPane;
import javax.swing.filechooser.FileSystemView;

import re.fr.echangeur.xml.genere.EchangeurType;
import re.fr.echangeur.xml.genere.VideoType;

public class DisqueScanner {

  public static File[] getListeLecteur() {
    return File.listRoots();
  }

  public static String[] getListeNomLecteur() {
    List<String> lst = new ArrayList<String>();
    for (File file : getListeLecteur()) {
      if (file.exists()) {
        lst.add(file.getAbsolutePath());
      }
    }
    return lst.toArray(new String[lst.size()]);
  }

  public static String getNomLecteur(String pathname, FileSystemView fileSystemView) {
    if (fileSystemView == null) {
      fileSystemView = FileSystemView.getFileSystemView();
    }
    File f = new File(pathname);
    if (fileSystemView.isFileSystemRoot(f)) {
      return fileSystemView.getSystemDisplayName(f);
    } else {
      return getNomLecteur(fileSystemView.getParentDirectory(f)
        .getAbsolutePath(), fileSystemView);
    }

  }

  /**
   * @param args
   */
  public static void main(String[] args) {

    File[] lst = getListeLecteur();

    for (File file : lst) {
      if (file.exists()) {
        System.out.println(file);
      }

    }

  }

  public DisqueScanner(String path, EchangeurType echangeurType, JEditorPane jEditorFichierImporte,
        String nomDisque) {

    File file = new File(path);
    File[] listFile = file.listFiles(VideoFilter.getInstance());
    if (listFile != null) {
      if (nomDisque == null) {
        nomDisque = DisqueScanner.getNomLecteur(path, null);
      }
      for (File f : listFile) {
        if (f.isDirectory()) {
          new DisqueScanner(f.getAbsolutePath(), echangeurType, jEditorFichierImporte, nomDisque);
        } else {

          VideoType videoType = new VideoType();
          videoType.setNomFichier(f.getName());
          videoType.setNomDisk(nomDisque);
          videoType.setProprietaire("proprietaire");
          echangeurType.getVideo()
            .add(videoType);
          jEditorFichierImporte.setText(f.getName());
          jEditorFichierImporte.repaint();
        }
      }
    }
  }
}
